package com.aaa.service.impl;

import com.aaa.dao.TestPlanFpaDao;
import com.aaa.entity.PageSort;
import com.aaa.entity.TblTestPlanFpa;
import com.aaa.service.TestPlanFpaService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Random;

/**
 * @Author: whr
 * @Description  TestPlanFpaService实现
 * @Date
 * @Modifiel
 */
@Service
public class TestPlanFpaServiceImpl implements TestPlanFpaService {

    @Autowired
    private TestPlanFpaDao testPlanFpaDao;

    /**
     *  查询
     *  查询所有的测试任务
     * @param pageSort
     * @return Page
     *
     */
    @Override
    public Page selectTblTestPlanFpa(PageSort pageSort) {
        /**
         *  使用分页插件      开启分页
         */
        Page page = PageHelper.startPage(pageSort.getPage(),pageSort.getLimit());
        Page tblTestPlanFpasList = (Page) testPlanFpaDao.selectTblTestPlanFpa(pageSort);
        return tblTestPlanFpasList;
    }

    /**
     * 获取六位数随机邀请码，
     * 使用递归算法，实现在数据库中不能重复
     * @return
     */
    private Integer getCode(){
        /**
         * random.nextInt(10)随机生成大于等于0，小于10的数
         * 循环6次 字符串拼接成6位数
         */
        Random random = new Random();
        String results = "";
        for (int i=0;i<6;i++){
            results = results + random.nextInt(10);
        }
        int i = Integer.parseInt(results);
        TblTestPlanFpa tblTestPlanFpa1 = testPlanFpaDao.selectTblTestPlanCode(i);
        if (tblTestPlanFpa1!=null){
            this.getCode();
        }
        return i;
    }


    /**
     *  添加
     *  添加测试任务
     * @param tblTestPlanFpa
     * @return boolean
     *
     */
    @Override
    public boolean insertTblTestPlanFpa(TblTestPlanFpa tblTestPlanFpa) {
        /**
         * 调用获取邀请码的私有方法
         */
        Integer result = this.getCode();
        /**
         * 判断数据库中是否存在此邀请码
         */
        tblTestPlanFpa.setTestCode(result);
        int i = testPlanFpaDao.insertTblTestPlanFpa(tblTestPlanFpa);
        if (i>0){
            return true;
        }
        return false;
    }

    /**
     *  修改
     *  修改测试任务
     * @param tblTestPlanFpa
     * @return boolean
     *
     */
    @Override
    public boolean updateTblTestPlanFpa(TblTestPlanFpa tblTestPlanFpa) {
        int i = testPlanFpaDao.updateTblTestPlanFpa(tblTestPlanFpa);
        if (i>0){
            return true;
        }
        return false;
    }

    /**
     *  删除
     *  删除测试任务
     * @param id
     * @return boolean
     *
     */
    @Override
    public boolean deleteTblTestPlanFpa(String id) {
        int i = testPlanFpaDao.deleteTblTestPlanFpa(id);
        if (i>0){
            return true;
        }
        return false;
    }

    /**
     * 根据code值查询测试计划
     * @param testCode
     * @return TblTestPlanFpa
     */
    @Override
    public TblTestPlanFpa selectTblTestPlanCode(Integer testCode) {
        return testPlanFpaDao.selectTblTestPlanCode(testCode);
    }
}
